﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Texfina.Core.Web;
using Texfina.BOQry.Co;
using Texfina.Core.Common;
using Texfina.Entity.Co;
using System.Data;

namespace CO
{
    public partial class wfProductoMnt : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //WebHelper.LoadListControl(ddFamilia, BFamilia.GetListFill_Qry01("ds_raznombre", "id_clipro");

                ddGrupo.DataSource = BFamilia.GetListFill_Qry01(11);
                ddGrupo.DataTextField = "ds_familia";
                ddGrupo.DataValueField = "id_grupo";
                ddGrupo.DataBind();

                String strTextoSeleccione = "Seleccione";

                ddGrupo.Items.Insert(0, new ListItem(strTextoSeleccione, "0"));
                //---------------------------------------------------------

                WebHelper.LoadListControl2(ddMoneda, BTablaGeneral.TablaGeneral_qry02("016"), "ds_item", "id_item");
                WebHelper.LoadListControl2(ddUmCompra, BTablaGeneral.TablaGeneral_qry02("020"), "ds_item", "id_item");
                WebHelper.LoadListControl2(ddUmConsumo, BTablaGeneral.TablaGeneral_qry02("022"), "ds_item", "id_item");

                btnNuevoItem.ImageUrl = Constants2.ConstMenuControlValue.BUTTON_NEW;
                btnTipGasto.ImageUrl = Constants2.ConstMenuControlValue.BUTTON_FIND;
                
                btnNuevo.ImageUrl = Constants2.ConstMenuControlValue.BUTTON_NEW;
                btnGrabar.ImageUrl = Constants2.ConstMenuControlValue.BUTTON_SAVENEW;

            }
        }


    
        protected void ddGrupo_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                ddFamilia.Items.Add(new ListItem("", ""));

                ddFamilia.DataSource = BFamilia.GetListFill_Qry02(12, ddGrupo.SelectedValue);
                ddFamilia.DataTextField = "ds_familia";
                ddFamilia.DataValueField = "id_familia";
                ddFamilia.DataBind();
                ddFamilia.Items.Insert(0, new ListItem("", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }

        protected void ddFamilia_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                ddSubFamilia.Items.Add(new ListItem("", ""));

                ddSubFamilia.DataSource = BFamilia.GetListFill_Qry03(13, ddGrupo.SelectedValue, ddFamilia.SelectedValue);
                ddSubFamilia.DataTextField = "ds_familia";
                ddSubFamilia.DataValueField = "id_subfami";
                ddSubFamilia.DataBind();

                ddSubFamilia.Items.Insert(0, new ListItem("", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }



        private void mSalvarDatosGrilla()
        {
            try
            {
                //recorre la cantidad de items, por cada item la entidad oAsigHorario va almacenando , 
                //esto para que data que se va ingresando en la grilla no se pierda

                List<EProdXUnd> lstSalvarDatos = new List<EProdXUnd>();

                for (int i = 0; GvDetalleProducto.Rows.Count > i; i++)
                {
                    // la entidad almacena los items de la grilla 

                    EProdXUnd oProdXUnd = new EProdXUnd();

                    // verificar si los valores ingresados en la grilla estan en label o texbox como tambien en un dropdowlinst
                    oProdXUnd.Id_prodprese = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtIdPresen")).Text) ? string.Empty : Convert.ToString(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtIdPresen")).Text);
                    oProdXUnd.Ds_prodprese = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPresentacion")).Text) ? string.Empty : Convert.ToString(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPresentacion")).Text);
                    oProdXUnd.Nu_uniprese = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndPres")).Text) ? 0 : Convert.ToInt16(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndPres")).Text);
                    oProdXUnd.Nu_umprese = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndMedida")).Text) ? 0 : Convert.ToInt16(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndMedida")).Text);
                    oProdXUnd.Qt_pesoneto = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoNeto")).Text) ? 0 : Convert.ToInt16(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoNeto")).Text);
                    oProdXUnd.Qt_pesobruto = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoBruto")).Text) ? 0 : Convert.ToInt16(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoBruto")).Text);
                    oProdXUnd.Mt_precio = string.IsNullOrEmpty(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPrecio")).Text) ? 0 : Convert.ToDecimal(((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPrecio")).Text);


                    //añade los valores de la entidad a la lista de la entidad

                    lstSalvarDatos.Add(oProdXUnd);

                }
                // se crea una sesion para almacenar la lista que contiene los  datos.

                Session["SeslstSalvaDatos"] = lstSalvarDatos;
            }

            catch (Exception ex)
            {

                ex.ToString();
            }
        }

 

        protected void btnNuevoItem_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                // crea la entidad tipo lista 
                //List<AsignacionHorarioEnt> lstAsigHorario = new List<AsignacionHorarioEnt>();
                // crea la entidad para obtener los campos que deseamos esten en blanco

                //AsignacionHorarioEnt asigHorario = new AsignacionHorarioEnt();

                List<EProdXUnd> lstProd = new List<EProdXUnd>();

                EProdXUnd prod = new EProdXUnd();

                //llega a ingresar siempre en cuando ya se tenga un registro en la grilla
                string str = Convert.ToString(GvDetalleProducto.Rows.Count + 1);
                if (GvDetalleProducto.Rows.Count > 0)
                {
                    //almacena en la entidad la informacion ingresada en la grilla
                    //salva los datos, hace que cuando se de agregar no se pierda la informacion ya ingresada

                    mSalvarDatosGrilla();
                    lstProd = (List<EProdXUnd>)(Session["SeslstSalvaDatos"]);

                    //lstAsigHorario = (List<AsignacionHorarioEnt>)(Session["SeslstSalvaDatos"]);
                    //añade un registro mas en blaco

                    prod.Id_prodprese = str.PadLeft(3, '0');
                    prod.Ds_prodprese = "";
                    prod.Nu_uniprese = 0;
                    prod.Nu_umprese = 0;
                    prod.Qt_pesoneto = 0;
                    prod.Qt_pesobruto = 0;
                    prod.Mt_precio = Convert.ToDecimal("0.000");


                    // muestra el item en blanco

                    lstProd.Add(prod);
                    GvDetalleProducto.DataSource = lstProd;
                    GvDetalleProducto.DataBind();
                    Session["lstListadoGrilla"] = lstProd;

                }
                else
                {
                    // Añande el primer item en blando de la grilla
                    prod.Id_prodprese = str.PadLeft(3, '0');
                    prod.Ds_prodprese = "";
                    prod.Nu_uniprese = 0;
                    prod.Nu_umprese = 0;
                    prod.Qt_pesoneto = 0;

                    prod.Qt_pesobruto = 0;
                    prod.Mt_precio = Convert.ToDecimal("0.000");

                    lstProd.Add(prod);

                    //Muestra la grilla con un fila en blanco 

                    GvDetalleProducto.DataSource = lstProd;

                    GvDetalleProducto.DataBind();

                    Session["lstListadoGrilla"] = lstProd;
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }


        
        protected void btnTipGasto_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Session[Constants2.ConstSessionVar.SESION_TIPOGASTO] = "_SESION_TIPOGASTO";
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open( 'wfTipGastoBnd.aspx', null, 'height=400,width=700,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'' );", true);
           }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }


        Int32 esIgv, esActivo;
        private void estadoIgv()
        {
            if(ChkAfectoIgv.Checked==true)
            {
                esIgv=1;
            }
            else
            {
                esIgv=0;
            }
         
        }
        private void estadoActivo()
        {
            if(ChkProductoActivo.Checked==true)
            {
                esActivo=1;
            }
            else
            {
                esActivo=0;
            }

        }
        protected void btnGrabar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                estadoIgv();
                estadoActivo();

                EProducto _prod = new EProducto();
                DropDownList ddl = new DropDownList();

                _prod.Id_grupo=ddGrupo.SelectedValue;
                _prod.Id_familia=ddFamilia.SelectedValue;
                _prod.Id_subfami=ddSubFamilia.SelectedValue;
                _prod.Ds_producto = txtProducto.Text.Trim().ToUpper();
                _prod.Ds_prodalias = txtAlias.Text.Trim().ToUpper();

                ddl.Items.Clear();
                

                ddl.DataSource = BProducto.getCodigo(_prod);
                ddl.DataTextField  = "id_producto";
                ddl.DataValueField = "id_producto";
                ddl.DataBind();

                if (ddl.SelectedItem.Text == "")
                {
                    //hddIdProducto.Value = "";
                }
                else
                {
                   hddIdProducto.Value = ddl.SelectedItem.Text;
                    txtidProducto.Text = hddIdProducto.Value;
                }
               
                EProducto prod = new EProducto();
                prod.Id_producto = txtidProducto.Text;
                
                prod.Ds_producto=txtProducto.Text.Trim().ToUpper();
                prod.Ds_prodalias=txtAlias.Text.Trim().ToUpper();
                prod.Id_grupo=ddGrupo.SelectedValue;
                prod.Id_familia=ddFamilia.SelectedValue;
                prod.Id_subfami=ddSubFamilia.SelectedValue;
                prod.Id_vunimed = ddUmCompra.SelectedValue;
                prod.Id_vunicons=ddUmConsumo.SelectedValue;
                prod.Nu_facequiv=Convert.ToDecimal(txtFactorEquiv.Text);
                prod.Id_vmoneda=ddMoneda.SelectedValue;
                prod.Mt_valrepo= Convert.ToDecimal(txtValReposicion.Text);
                prod.St_igvisc = esIgv.ToString();
                prod.St_activo=esActivo.ToString();
                prod.Id_tipogsto=txtTipGasto.Text.Trim().ToUpper();
                prod.Id_ucrearec = "SISTEMAS";
                prod.Id_uupdarec = "SISTEMAS";
                prod.St_anulado="0";
                
                BProducto.ProductoInsert(prod);

                ///Detalle

                EProdXUnd prodxUnd = new EProdXUnd();
                

                for (int i = 0; GvDetalleProducto.Rows.Count > i; i++)
                {
                    prodxUnd.Id_producto = txtidProducto.Text;

                    var Lblpds_IdProdprese = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtIdPresen")).Text;
                    var Lblpds_prodprese = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPresentacion")).Text;
                    var Lblpnu_uniprese = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndPres")).Text;
                    var Lblpnu_umprese = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtUndMedida")).Text;
                    var Lblpqt_pesoneto = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoNeto")).Text;
                    var Lblpqt_pesobruto = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPesoBruto")).Text;
                    var Lblpmt_precio = ((TextBox)GvDetalleProducto.Rows[i].FindControl("txtPrecio")).Text;

                    prodxUnd.Id_prodprese = Lblpds_IdProdprese;
                    prodxUnd.Ds_prodprese = Lblpds_prodprese;
                    prodxUnd.Nu_uniprese = Convert.ToInt16(Lblpnu_uniprese);
                    prodxUnd.Nu_umprese = Convert.ToInt16(Lblpnu_umprese);
                    prodxUnd.Qt_pesoneto = Convert.ToDecimal(Lblpqt_pesoneto);
                    prodxUnd.Qt_pesobruto = Convert.ToDecimal(Lblpqt_pesobruto);
                    prodxUnd.Mt_precio = Convert.ToDecimal(Lblpmt_precio);
                    prodxUnd.Id_ucrearec = "SISTEMAS";
                    prodxUnd.Id_uupdarec = "SISTEMAS";

                    BProdXUnd.ProdXUnd_mmt01(prodxUnd);
                   
                }
                    lblMensaje.Text = "Datos Grabados";
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }
     
    }
}